def move(n, a, b, c):
    """每一个移动过程，就是将当前最大数字移动到C柱子"""
    # 退出递归条件，a柱只有一个的时候，一个移动过程结束
    if n == 1:
        print(a, '-->', c)  # a柱只有一个的时候a移动到c
        return  # 移动结束，返回

    move(n - 1, a, c, b)  # 首先需要把 (N-1) 个圆盘移动到 b
    move(1, a, b, c)  # 将a的最后一个圆盘移动到c
    move(n - 1, b, a, c)  # 再将b的(N-1)个圆盘移动到c


if __name__ == '__main__':
    move(4, 'A', 'B', 'C')
